package com.ship.dispatch.bean.sys;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ship.common.core.base.BaseBean;
import com.ship.common.core.mapping.Label;
import com.ship.common.core.mapping.SearchItem;
import com.ship.common.core.mapping.TableColumn;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;

/**
 * 操作日志表
 */
@TableName("sys_operation_record")
@Data
public class SysOperationRecord extends BaseBean {

    /**
     * 用户账号
     */
    @Label(value="用户账号")
    @SearchItem
    @TableColumn
    @TableField("user_name")
    @ApiModelProperty(value = "用户账号")
    private String userName;

    /**
     * 操作模块
     */
    @Label(value="操作模块")
    @SearchItem
    @TableColumn
    @TableField("module")
    @ApiModelProperty(value = "操作模块")
    private String module;

    /**
     * 操作方法
     */
    @TableField("description")
    @ApiModelProperty(value = "操作方法")
    private String description;

    /**
     * 请求地址
     */
    @Label(value="请求地址")
    @SearchItem
    @TableColumn
    @TableField("url")
    @ApiModelProperty(value = "请求地址")
    private String url;

    /**
     * 请求方式
     */
    @Label(value="请求方式")
    @SearchItem
    @TableColumn
    @TableField("request_method")
    @ApiModelProperty(value = "请求方式")
    private String requestMethod;

    /**
     * 调用方法
     */
    @Label(value="调用方法")
    @SearchItem
    @TableColumn
    @TableField("method")
    @ApiModelProperty(value = "调用方法")
    private String method;

    /**
     * 请求参数
     */
    @TableField("params")
    @ApiModelProperty(value = "请求参数")
    private String params;

    /**
     * 返回结果
     */
    @TableField("result")
    @ApiModelProperty(value = "返回结果")
    private String result;

    /**
     * 异常信息
     */
    @TableField("error")
    @ApiModelProperty(value = "异常信息")
    private String error;

    /**
     * 备注
     */
    @TableField("remark")
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 请求耗时, 单位毫秒
     */
    @Label(value="请求耗时(毫秒)")
    @TableColumn
    @TableField("spend_time")
    @ApiModelProperty(value = "请求耗时, 单位毫秒")
    private Integer spendTime;

    /**
     * 操作系统
     */
    @TableField("os")
    @ApiModelProperty(value = "操作系统")
    private String os;

    /**
     * 设备名
     */
    @TableField("device")
    @ApiModelProperty(value = "设备名")
    private String device;

    /**
     * 浏览器类型
     */
    @TableField("browser")
    @ApiModelProperty(value = "浏览器类型")
    private String browser;

    /**
     * ip地址
     */
    @TableField("ip")
    @ApiModelProperty(value = "ip地址")
    private String ip;

    /**
     * 状态, 0成功, 1异常
     */
    @Label(value="状态")
    @TableField("status")
    @ApiModelProperty(value = "状态, 1成功, 2异常")
    private Integer status;

    /**
     * 状态字符串, 0成功, 1异常
     */
    @Label(value="状态")
    @TableColumn
    @TableField(exist = false)
    @ApiModelProperty(value = "状态字符串, 1成功, 2异常")
    private String statusStr;

    /**
     * 操作时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "操作时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 修改时间
     */
    @TableField("update_time")
    @ApiModelProperty(value = "修改时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 业务类型，0=其它,1=新增,2=修改,3=删除,4=授权,5=导出,6=导入,7=强退,8=生成代码,9=清空数据
     */
    @TableField("business_type")
    @ApiModelProperty(value = "业务类型")
    private Integer businessType;

    public String getStatusStr(){
        String result = "";
        if(null != getStatus()){
            if(getStatus().equals(1)){
                result = "成功";
            }
            if(getStatus().equals(2)){
                result = "异常";
            }
        }
        return result;
    }
}
